﻿using SanJ.FreeCare.TypeFramework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities.Auditing;

namespace SanJ.FreeCare.PractitionerRoles
{
    public class PractitionerRole : AuditedAggregateRoot<Guid>
    {
        /// <summary>
        /// Identifier(s) by which this encounter is known
        /// </summary>
        public List<Identifier> Identifier { get; private set; }

        public bool Active { get; private set; }

        /// <summary>
        /// 执业（主治）医师获准履行这些职责的开始时间
        /// </summary>
        public DateTime PeriodStartTime { get; private set; }

        /// <summary>
        /// 执业（主治）医师获准履行这些职责的结束时间
        /// </summary>
        public DateTime PeriodEndTime { get; private set; }

        /// <summary>
        /// 执业（主治）医师Id
        /// </summary>
        public Guid PractitionerId { get; private set; }

        /// <summary>
        /// 组织Id
        /// </summary>
        public Guid OrganizationId { get; private set; }

        /// <summary>
        /// 执业（主治）医师角色编码
        /// </summary>
        public string[] PractitionerTypeCode { get; private set; }

        /// <summary>
        /// Specific specialty of the practitioner
        /// 从业人员的具体专业
        /// </summary>
        public string[] SpecialtyCode { get; private set; }

        /// <summary>
        /// 机构Id
        /// </summary>
        public Guid[] LocationId { get; private set; }

        /// <summary>
        /// Healthcare services provided for this role's Organization/Location(s)
        /// 医疗服务
        /// </summary>
        public string[] HealthcareServiceCode { get; private set; }

        /// <summary>
        /// Official contact details relating to this PractitionerRole
        /// 与该从业人员相关的官方联系方式
        /// </summary>
        public string Contact { get; private set; }

        /// <summary>
        /// Collection of characteristics (attributes)
        /// 特征（属性）集合
        /// </summary>
        public string[] Characteristic { get; private set; }

        /// <summary>
        /// A language the practitioner (in this role) can use in patient communication
        /// 执业医师（在此角色中）在与患者交流时可以使用的语言
        /// </summary>
        public string[] Communication { get; private set; }

        /// <summary>
        /// Times the Practitioner is available at this location and/or healthcare service (including exceptions)
        /// 执业医师在该地点和/或医疗服务机构的工作时间（包括例外情况）
        /// </summary>
        public string AvailabilityCode { get; private set; }

        public PractitionerRole() { }

    }
}
